草庐IT

ML 方法

全部标签

c# - 方法推断不适用于方法组

考虑voidMain(){varlist=new[]{"1","2","3"};list.Sum(GetValue);//errorCS0121list.Sum(s=>GetValue(s));//works!}doubleGetValue(strings){doubleval;double.TryParse(s,outval);returnval;}CS0121错误的描述是Thecallisambiguousbetweenthefollowingmethodsorproperties:'System.Linq.Enumerable.Sum(System.Collections.Gen

c# - Lazy<T> 延迟加载错误 : A field initializer cannot reference the non-static field, 方法或属性

我第一次尝试使用延迟加载来初始化我的类中的进度对象。但是,我收到以下错误:Afieldinitializercannotreferencethenon-staticfield,method,orproperty.privateLazym_progress=newLazy(()=>{longtotalBytes=m_transferManager.TotalSize();returnnewProgress(totalBytes);});在.NET2.0中,我可以执行以下操作,但我更愿意使用更新的方法:privateProgressm_progress;privateProgressPro

c# - 从 F# 代码使用 C# 中定义的扩展方法

我为各种类定义了一系列扩展方法在C#库中。我目前正在编写一些F#代码,而不是重写我只想在我的F#代码中使用我现有的扩展方法。我添加了对库的引用并使用了打开语句导入命名空间,但扩展方法不会出现在F#中 最佳答案 更新:在当前版本的F#中,您可以通过添加简单地使用扩展方法openTheNamespaceOfExtensionMethod到您的源文件(就像您在C#中使用using指令所做的那样)并简单地调用扩展方法,就好像它是一个普通的实例方法一样。顺便说一句,如果需要,您始终可以像普通静态方法一样直接调用它们,并将对象引用作为第一个参数

C# 扩展方法仅在一个类 ("private"中可见和可访问)

在C#中,是否可以在类上创建扩展方法但限制类内的可见性/可访问性?(例如,类M上的扩展方法A只能在类Z中访问)例子:classA{Stringfoo="";Stringbar=foo.MakeMillionaire("arg");}在上面的示例中,我希望扩展字符串类仅的扩展方法“MakeMillionaire”在类A中可见和可访问。我可以通过在静态类中定义扩展方法来以某种方式做到这一点吗A类?编辑:尝试常规嵌套类会产生“错误:必须在顶级静态类中定义扩展方法”。 最佳答案 扩展方法只能在静态非泛型外部(非嵌套)类中定义。在这种情况下,

c# - 使类中的方法全部静态

我的同事根据我的一个类(它是一个实例类)告诉我,如果你的类中没有字段(支持字段),只需将类中的所有方法设为静态或将类设为单例这样您就不必使用关键字new来调用此BL类中的方法。我认为这是常见的好做法?基本面向对象?我只是想看看人们对此的看法。我认为基本上他是在说因为没有状态,所以方法不需要是实例方法。在这种情况下,我不确定是否每次都将其设为单例...这是他给我的某种模式或好的建议吗?这是我正在谈论的类(请不要在此线程中重新发布任何此代码,这是私有(private)的):http://www.elbalazo.net/post/class.txt 最佳答案

c# - 使用 LINQ 更新 IEnumerable 对象的简单方法

假设我有这样一个业务对象,classEmployee{publicstringname;publicintid;publicstringdesgination;publicintgrade;}ListlstEmp=newList(){newEmployee(){name="A",desgination="SE",id=1},newEmployee(){name="b",desgination="TL",id=2},newEmployee(){name="c",desgination="PL",id=3},newEmployee(){name="d",desgination="SE",i

C# 类库方法摘要未显示在 vb.net 项目的智能感知中

(对比2008)我正在为我的VB.NET项目使用C#库。并且方法摘要/注释或它们的名称不会在智能感知中显示。这应该是那样的吗?或者我必须做些什么来修复它?如果不能,VS2010能做到这一点吗?编辑:仍未解决。现在正在构建库dll+xml文件,但是如何在我的vb项目中导入xml文件?见图片:http://i52.tinypic.com/25kh5xw.png 最佳答案 在C#库中,转到构建选项卡上的属性,选中包含XML文档的复选框并指定名称和路径。之后将新库包含在您的VB.Net项目中。

c# - 测试对象是否为 IEnumerable 的最快方法是什么?

有没有一种快速的方法来查明object变量的内容是否支持IEnumerable?具体来说,我正在使用System.Xml.XPath中的XPathEvaluate(),它可以返回“Anobjectthatcancontainabool,adouble,astring,oranIEnumerable.”所以执行后:XDocumentcontent=XDocument.Load("foo.xml");objectaction=content.XPathEvaluate("/bar/baz/@quux");//DoInowcallaction.ToString(),orforeach(var

c# - 静态方法是否共享其局部变量以及在不同线程并发使用期间会发生什么?

C#问题-我正在尝试确定是否可以使用静态方法,在该方法中它确实有一些它使用的局部变量。局部变量是否在方法的使用中“共享”?例如,如果从不同线程同时调用/使用静态方法,会发生什么情况?一个线程是否阻塞直到另一个线程完成等?也许普遍的问题是,在线程应用程序中,什么时候应该“不”使用静态方法? 最佳答案 方法中的局部变量存在于栈中,每个线程都有自己的栈。因此,多个线程使用该方法是安全的。但是,如果方法本身使用静态变量,那么您应该使用适当的MT保护。您可能调用的外部方法也需要安全...... 关

C# - 如何使方法仅对继承方法基类的类可见

我有一个标记为抽象的基类。是否可以使该基类中的方法仅对继承该基类的其他类可见?假设我有Class1,它是我的基类,被标记为抽象类。Class2继承了Class1并且可以调用它的所有公共(public)方法。我希望Class3创建Class2的实例,但不能调用Class1的某些方法。我尝试将这些方法本身标记为抽象方法,但当Class2尝试使用它们时出现错误。错误是:“...无法声明正文,因为它被标记为抽象” 最佳答案 为什么不声明方法protected?publicabstractclassClass1{protectedabstra